#include <opencv2/opencv.hpp>
#include <queue>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;

class Interpolation
{//
public:
    Interpolation();
    ~Interpolation()
    {
        destroyAllWindows();
        _backgroud.release();
    }
    void line_inter();     // 直线插补
    void arc_inter();      // 圆弧插补
    void anti_arc_inter(); // 圆弧插补
    void clear();
    inline void setEndPt(const Point2f &end_pt) { _line_pt = end_pt; }
    inline const Point2f & getEndPt() { return _end_pt; }
    inline void setRadius(const float &radius) { _radius = radius; }
    void  DegSetPoint(const int &deg,const float &radius,const uint8_t pt);
    inline void setStep(const float &step) { _step = step; }
    private:
    Mat _backgroud;
    float _step = 0.f;  // 插补步长
    float _radius=0.f;
    Point _bg_center;   // 图像坐标中心点
    Point2f _line_pt;     // 直线插补终点
    Point2f _begin_pt;    // 起始点相对坐标
    Point2f _end_pt;      // 终点相对坐标
    Point2f relative2image(const Point2f &,const uint8_t);
};
